const DashScopeService = require('./src/services/dashscopeService');

async function testDashScopeService() {
    console.log('🚀 开始测试阿里云百炼API服务...\n');
    
    try {
        const dashscope = new DashScopeService();
        console.log('✅ DashScope服务初始化成功');
        console.log(`📍 API Base URL: ${dashscope.baseUrl}`);
        console.log(`🤖 默认模型: ${dashscope.defaultModel}`);
        console.log(`⏱️ 超时时间: ${dashscope.timeout}ms\n`);
        
        // 测试1: 连接测试
        console.log('📡 测试1: API连接测试');
        console.log('=' .repeat(50));
        const connectionTest = await dashscope.testConnection();
        if (connectionTest.success) {
            console.log('✅ 连接测试成功');
            console.log(`📝 响应内容: ${connectionTest.response}`);
            if (connectionTest.usage) {
                console.log(`📊 Token使用情况:`, connectionTest.usage);
            }
        } else {
            console.log('❌ 连接测试失败');
            console.log(`❗ 错误信息: ${connectionTest.error}`);
            return;
        }
        
        console.log('\n');
        
        // 测试2: 简单文本生成
        console.log('📝 测试2: 简单文本生成');
        console.log('=' .repeat(50));
        const simplePrompt = '请用一句话介绍什么是人工智能';
        console.log(`💭 提示词: ${simplePrompt}`);
        
        const simpleResult = await dashscope.generateText(simplePrompt, {
            maxTokens: 100,
            temperature: 0.7
        });
        
        if (simpleResult.success) {
            console.log('✅ 简单文本生成成功');
            console.log(`📝 生成内容: ${simpleResult.content}`);
            console.log(`📊 Token使用情况:`, simpleResult.usage);
        } else {
            console.log('❌ 简单文本生成失败');
            console.log(`❗ 错误信息: ${simpleResult.error}`);
        }
        
        console.log('\n');
        
        // 测试3: 技术文章生成（短篇）
        console.log('📄 测试3: 技术文章生成');
        console.log('=' .repeat(50));
        const articleTopic = 'Node.js异步编程的最佳实践';
        console.log(`📚 文章主题: ${articleTopic}`);
        console.log('⏳ 正在生成文章，请稍候...');
        
        const articleResult = await dashscope.generateArticle(articleTopic, 'professional', 'short');
        
        if (articleResult.success) {
            console.log('✅ 技术文章生成成功');
            console.log(`📝 文章长度: ${articleResult.content.length} 字符`);
            console.log(`📊 Token使用情况:`, articleResult.usage);
            console.log('\n📖 文章内容预览 (前500字符):');
            console.log('-' .repeat(50));
            console.log(articleResult.content.substring(0, 500) + (articleResult.content.length > 500 ? '...' : ''));
            console.log('-' .repeat(50));
        } else {
            console.log('❌ 技术文章生成失败');
            console.log(`❗ 错误信息: ${articleResult.error}`);
        }
        
        console.log('\n');
        
        // 测试4: 获取可用模型（可选）
        console.log('🤖 测试4: 获取可用模型');
        console.log('=' .repeat(50));
        const modelsResult = await dashscope.getAvailableModels();
        
        if (modelsResult.success && modelsResult.models.length > 0) {
            console.log('✅ 成功获取可用模型列表');
            console.log('📋 可用模型:', modelsResult.models);
        } else {
            console.log('⚠️ 无法获取模型列表，使用默认模型');
            console.log('📋 默认模型:', modelsResult.defaultModels);
        }
        
        console.log('\n🎉 所有测试完成！');
        
    } catch (error) {
        console.error('💥 测试过程中发生错误:', error.message);
        console.error('📋 错误详情:', error);
        
        if (error.message.includes('DASHSCOPE_API_KEY')) {
            console.log('\n💡 解决方案:');
            console.log('1. 确保 .env 文件存在并包含正确的 DASHSCOPE_API_KEY');
            console.log('2. 检查API密钥是否有效且未过期');
            console.log('3. 确认API密钥有足够的权限和余额');
        }
    }
}

// 运行测试
if (require.main === module) {
    testDashScopeService().then(() => {
        console.log('\n✨ 测试脚本执行完毕');
        process.exit(0);
    }).catch(error => {
        console.error('\n💥 测试脚本执行失败:', error);
        process.exit(1);
    });
}

module.exports = testDashScopeService;